uruguayfandomcom_es-20200214-history
Módulo:Ficha de centro educativo
local z = {} local argumentos -- Tabla de argumentos con los que se llama a la función local argumento={} -- Argumentos eliminando los argumentos sin datos local Entidad -- Tabla con los datos en Wikidata del libro. -- Ver Wikidata:WikiProject Books para las propicedades posibles local algunaPropiedadEnlazaWikidata -- Para alguna propiedad no existe la etiqueta ni el enlace mostrándose algo de la forma d:... -- Módulos utilizados local ModuloArgumentos = require('Módulo:Argumentos') local ModuloFicha = require('Módulo:Ficha') local ModuloFormato = require('Módulo:Formato texto') --local ModuloIdentificadores = require('Módulo:Identificadores') local ModuloPaginas = require('Módulo:Páginas') --local ModuloWikidataFormatos = require('Módulo:Wikidata/Formatos') local ModuloWikidata = require('Módulo:Wikidata') local ModuloTablas = require('Módulo:Tablas') --local ModuloURL = require('Módulo:URL') -- Constantes --local enMayusculas = {'formatoTexto' = 'mayúscula'} --local enMayusculasO = {'formatoTexto' = 'mayúscula', 'conjunción'=' o '} --local listaNoOrdenada = {'lista' = 'no ordenada'} --, 'debeExistir' = 'sí' --local lugar = {'conjunción'=' o ', 'valor-función' = ModuloWikidataFormatos.formatoLugar} --local debeExistir = {'debeExistir' = 'sí'} --local conPeriodo = {'lista' = 'no ordenada', 'formatoTexto' = 'mayúscula', 'calificativo' = ModuloWikidataFormatos.formatoPeriodo} function z.Ficha(frame) -- Hacer que funcione la función formatBandera y formatoGentilicio ModuloWikidata:setFrame(frame) -- No funciona si se pone ModuloWikidata.setFrame(marco) --Obtener una copia de los argumentos eliminando los argumentos sin valor local argumento = ModuloArgumentos.obtenerArgumentosConValor(frame) -- Obtener datos complejos -- Obtener los datos de la página donde se inserta la ficha de Wikidata. Entidad = mw.wikibase.getEntityObject() or {} --if true then -- return ModuloTablas.tostring(Entidad) --end nombre = argumento'nombre' or obtenerEtiquetaWikidata() or ModuloPaginas.nombrePagina({desambiguar='sí'}) -- Para los lemas ver la propiedad P1451, Wharton Business School local lema = ModuloFormato.enCursivas (argumento'lema' , argumento'lemaref') local lemaesp = ModuloFormato.entreComillas(argumento'lemaesp', argumento'lemaespref') local tipocabecera = 'libro' local estilotitulo = 'background-color:#ffe8b8' local tipoCentro = propiedad('P31') or '' if tipoCentro:find('universidad') then tipocabecera = 'universidad' estilotitulo = 'background-color:#cddefe' end local estudiantes = argumento'estudiantes' local listaEstudiantes = '' if estudiantes then listaEstudiantes = ' • ' end local Ficha = { --clase = 'biography vcard', -- Título tipocabecera = tipocabecera, titulo = nombre, estilotitulo = estilotitulo, subtitulo = argumentonombre', estilosubtitulo = 'font-style:italic; font-size: 80%;' .. estilotitulo, estiloseccion = estilotitulo, estilopie = 'font-size: x-small', --Imagen imagen = argumento'escudo' or ( (not argumento'escudo' and not argumento'logo' and not argumento'imagen') and (propiedad('P94') or propiedad('P154'))), 'tamañoimagen'= argumentoescudo' or '90px', pie = argumentoescudo', imagen2 = argumento'imagen' or propiedad('P18', {uno='sí'}), 'tamañoimagen2'= argumentoimagen' or '240px', pie2 = argumentoimagen', imageninferior = argumento'logo', 'tamañoimageninferior' = argumentologo', pieinferior = argumentologo', --Etiquetas y datos estiloetiqueta = 'width:33%', estilodatos = 'padding:0.2em; line-height:1.3em; vertical-align:middle;', piedetabla = argumento'notas' and (' ' .. argumento'notas' .. ), {tipo='sección', {'Sigla' , argumento'sigla'}, {'Acrónimo', argumento'acrónimo'}, {'Alias' , argumento'sobrenombre'}, {'Lema' , ModuloFormato.enVariasLineas({lema, lemaesp})}, {'Tipo' , argumento'tipo'}, --{'Universidad' , argumento'universidad'}, {'Forma parte de' , argumento'universidad' or propiedad('P361')}, {'Fundación' , argumento'fundación' or propiedad('P571')}, {'Fundador/es' , argumento'fundador'}, }, {tipo='sección', 'titulo' = 'Localización', {'Dirección', argumento'localización' or ModuloFormato.enVariasLineas({argumento'dirección', ModuloFormato.separadosPorComa({argumento'ciudad', argumento'estado', argumento'país'})}) or ModuloFormato.enVariasLineas({propiedad('P969'), --Dirección postal ModuloFormato.separadosPorComa({propiedad('P131'),propiedad('P17')})})}, -- {'Campus' , argumento'campus'}, {'Coordenadas' , argumento'coor' or argumento'coordenadas' or propiedad('P625', {formato='dms', display='inline,title', tipo='edu', uno='sí'})}, {'Otras sedes' , argumento'sedes'}, }, {tipo='sección', 'titulo' = ModuloFormato.entreParentesis('Administración', argumento'admin_año'), {'Rector/a', argumento'rector'}, {'Vicerrector/a', argumento'vicerrector'}, {'Canciller' , argumento'canciller'}, {'Vicecanciller', argumentocanciller'}, {'Presidencia' , argumento'presidente'}, {'Director' , argumento'director'}, {'Decanato' , argumento'decano'}, {'Vicedecanato' , argumento'vicedecano'}, {argumento'administrador', argumentoadministrador'}, {'Afiliaciones', argumento'afiliaciones'}, {'Financiamiento', argumento'financiamiento'}, {'Presupuesto', argumento'presupuesto'}, {'Funcionarios', argumento'funcionarios'}, {'Administrativos', argumento'administrativos'}, }, {tipo='sección', 'titulo' = ModuloFormato.entreParentesis('Academia', argumento'academia_año'), {'Profesores' , argumento'profesores'}, {'Empleados' , argumento'empleados'}, {'Docentes' , argumento'docentes'}, {'Estudiantes', estudiantes}, {listaEstudiantes .. 'Bachillerato', argumento'bachillerato'}, {listaEstudiantes .. 'Pregrado' , argumento'pregrado'}, {listaEstudiantes .. 'Posgrado' , argumento'posgrado' or argumento'postgrado'}, {listaEstudiantes .. 'Doctorado' , argumento'doctorado'}, {listaEstudiantes .. 'Colegiales' , argumento'colegiales'}, {listaEstudiantes .. 'Titulados' , argumento'titulados'}, {listaEstudiantes .. 'Otros' , argumento'otros_estudiantes'}, {'Mascota', argumento'mascota'}, {'Colores', argumento'colores'}, {'Colores académicos', argumentoacadémicos'}, {'Colores deportivos', argumentodeportivos'}, }, {tipo='sección', 'titulo' = 'Sitio web', {, argumentoweb' or propiedad('P856')}, }, } categorias = '' if algunaPropiedadEnlazaWikidata then categorias = 'Categoría:Wikipedia:Páginas con propiedades de Wikidata sin etiqueta' end if ( mw.title.getCurrentTitle().namespace 0 ) then if (argumento'coor' or argumento'coordenadas') and propiedad('P625', {formato='dms', display='inline', tipo='edu', uno='sí'}) then categorias = categorias .. 'Categoría:Wikipedia:Artículos con coordenadas locales' elseif argumento'coor' or argumento'coordenadas' then categorias = categorias .. 'Categoría:Wikipedia:Artículos con coordenadas por trasladar a Wikidata' end end --if educacion and almamater then -- categorias = categorias .. 'Categoría:Wikipedia:Páginas que tienen informado el campo educación' --end return ModuloFicha.infobox(Ficha) .. categorias end -- Función que devuelve la lista de los valores de una propiedad en Wikidata formateados function propiedad(idPropiedad,opciones) if Entidad and Entidad.claims and Entidad.claimsidPropiedad then if not opciones then opciones = {} end opciones'propiedad' = idPropiedad valorPropiedad = ModuloWikidata.getPropiedad(opciones,Entidad.claimsidPropiedad) if valorPropiedad and valorPropiedad:match('%[%then algunaPropiedadEnlazaWikidata = true end return valorPropiedad end end function obtenerEtiquetaWikidata() if Entidad and Entidad.labels and Entidad.labels.es then return Entidad.labels.es.value end end --[[ function listaDesplegable(titulo, lista, frame) if not lista then return end return frame:preprocess(' ') end function formatoOcupacionMasculino(valor, opciones, frame) local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor) -- Corregir la ocupación eliminando el femenino if etiquetaOcupacion then etiquetaOcupacion = etiquetaOcupacion:match('^(.+)%s*/%s*.+$') or etiquetaOcupacion end return ModuloWikidataFormatos.enlazar(enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion, opciones) end function corregirOcupacion(etiquetaOcupacion) if not etiquetaOcupacion then return end cadena1 = etiquetaOcupacion:match('^(.+)o%s*/a$') or -- científico/a etiquetaOcupacion:match('^(.+)%s*/a$') -- escritor/a if cadena1 then return cadena1 .. 'a' end cadena1, cadena2, cadena3 = etiquetaOcupacion:match('^(.+)o(%s*)/a%s+(.+)$') -- if cadena1 and cadena2 and cadena3 then return cadena1 .. 'a' .. cadena2 .. cadena3 end cadena1, cadena2, cadena3 = etiquetaOcupacion:match('^(.+)%s*/a(%s+)(.+)$') -- escritor/a de literatura infantil if cadena1 and cadena2 and cadena3 then return cadena1 .. 'a' .. cadena2 .. cadena3 end return etiquetaOcupacion:match('^.+%s*/%s*(.+)$') or -- actor/actriz etiquetaOcupacion end function formatoOcupacionFemenino(valor, opciones, frame) local enlaceOcupacion, etiquetaOcupacion, idEntidadOcupacion = ModuloWikidataFormatos.obtenerDatos(valor) return ModuloWikidataFormatos.enlazar(enlaceOcupacion, corregirOcupacion(etiquetaOcupacion), idEntidadOcupacion, opciones) end function obtenerValorCalificativo(Propiedad, Calificativo, ValorPropiedad) -- Obtener el valor del primer calificativo de la propiedad con el valor recibido if not Entidad or not Entidad.claims or not Entidad.claims[Propiedad then return end for k,v in pairs(Entidad.claimsPropiedad) do if v.mainsnak and v.mainsnak.datavalue and v.mainsnak.datavalue.value and v.mainsnak.datavalue.value'numeric-id' ValorPropiedad and v.qualifiers and v.qualifiersCalificativo and v.qualifiersCalificativo1 and v.qualifiersCalificativo1.datavalue then return v.qualifiersCalificativo1.datavalue.value end end end function obtenerFacebook() return obtenerValorCalificativo('P553' -- cuenta en red social , 'P554' --dirección en red social , 355) -- Facebook or propiedad('P2013'); -- Ejemplo: Gillian Flynn end function obtenerTwitter() return obtenerValorCalificativo('P553' -- cuenta en red social , 'P554' --dirección en red social , 918) -- Twitter end]]-- return z